package com.foreveross.proxyip;

import java.io.Serializable;
import java.util.List;


/**
 * 代理IP提供者接口
 * <p>通过指定方式获得代理IP
 * @author xiangsf
 * @since 2013-1-29 
 */
public interface IProxyIpProvider {
	/**
	 * 提供代理IP集
	 * <p>返回的ip一般来讲包含端口号，使用：分隔，如127.0.0.1:80
	 * @return
	 */
	public List<ProxyIpModel> provideProxyIps();
	/**
	 * 根据不同的渠道标识提供代理IP集
	 * <p>返回的ip一般来讲包含端口号，使用：分隔，如127.0.0.1:80
	 * @return
	 */
	public List<ProxyIpModel> provideProxyIps(Serializable channelId);
	/**
	 * 提供代理IP
	 * <p>返回的ip一般来讲包含端口号，使用：分隔，如127.0.0.1:80
	 * @return
	 */
	public ProxyIpModel provideProxyIp();
	/**
	 * 根据不同的渠道标识提供代理IP
	 * <p>返回的ip一般来讲包含端口号，使用：分隔，如127.0.0.1:80
	 * @return
	 */
	public ProxyIpModel provideProxyIp(Serializable channelId);
	/**
	 * 回收代理IP
	 * <p>代理ip在使用完后，为了使ip可再利用，或标识不可再使用等状态，需要通知回收
	 */
	public void rollBackProxyIp(ProxyIpModel model);
}
